Перейти к основному содержимому

🧮 Проверка качества пакетов

🎯 Цель раздела

После изучения этого раздела вы:

  • освоите инструменты для проверки качества пакетов;
  • научитесь применять ROSA Packaging Guidelines;
  • узнаете, как тестировать пакеты на стабильность и безопасность;
  • будете готовы выпускать пакеты, соответствующие стандартам дистрибутива ROSA.

🧩 Что такое качество пакета

Качество RPM-пакета — это:

  1. Соблюдение структуры и стандартов SPEC;
  2. Отсутствие ошибок в установке, обновлении и удалении;
  3. Корректные зависимости;
  4. Чистота buildroot и отсутствие мусора;
  5. Соответствие лицензии и политики безопасности.

🧰 Проверка при помощи rpmlint

rpmlint — основной инструмент статического анализа RPM и SPEC-файлов.

Установка

sudo dnf install rpmlint

Проверка SPEC и пакета

rpmlint SPECS/hello.spec RPMS/x86_64/hello-1.1-2.x86_64.rpm

Пример вывода

hello.x86_64: W: no-manual-page-for-binary hello
hello.spec: W: mixed-use-of-spaces-and-tabs

Коды сообщений

ТипЗначение
E:Ошибка — обязательно исправить
W:Предупреждение — желательно устранить
I:Информация — можно проигнорировать при обосновании

⚙️ Распространённые предупреждения и их исправление

ПредупреждениеОписаниеРешение
no-manual-page-for-binaryНет man-страницыДобавить документацию или README
non-standard-dir-in-usrУстановка в нестандартный путьПроверить пути и макросы
no-%build-sectionПропущена секция сборкиДобавить %build
macro-in-commentМакрос в комментарииЭкранировать %%%
incoherent-version-in-changelogВерсия changelog не совпадает с VersionИсправить номер версии

🧾 Политика ROSA Packaging Guidelines

ROSA придерживается собственных Packaging Guidelines, основанных на принципах Fedora, но адаптированных под свою инфраструктуру и Automated Build Farm (ABF).

Основные принципы:

  1. SPEC должен быть читаемым.
  2. Сборка должна быть воспроизводимой.
  3. Пакеты не должны использовать системные пути вручную.
  4. Все исходники и патчи должны быть в SOURCES.
  5. Документация должна быть отмечена тегами %doc и %license.
  6. Каждый пакет должен иметь уникальное Name, Version, Release.
  7. Запрещено скачивать файлы во время сборки (никаких curl, wget).

📘 Проверка чистоты buildroot

После сборки можно убедиться, что в пакет попадают только нужные файлы:

rpm -qlp RPMS/x86_64/hello-1.1-2.x86_64.rpm

Если видите файлы из /home или /tmp, значит SPEC настроен неправильно — всё должно быть в стандартных путях /usr, /etc, /var.


🧪 Тестирование установки и удаления

Тесты выполняются локально или в mock:

sudo dnf install ./RPMS/x86_64/hello-1.1-2.x86_64.rpm
sudo dnf remove hello

Проверка на чистоту:

rpm -qf /usr/bin/hello

Если после удаления команды возвращают не принадлежит ни одному пакету, — удаление прошло корректно.


🔒 Проверка лицензии и безопасности

Каждый пакет обязан указывать корректную лицензию:

License: MIT

⚠️ Лицензия должна точно соответствовать upstream-проекту. Если исходники без явной лицензии — необходимо связаться с автором или не публиковать пакет в репозитории ROSA.

Для безопасности:

  • не используйте бинарные blob-файлы;
  • избегайте сторонних скриптов с внешних URL;
  • проверяйте патчи на внедрение вредоносных изменений.

🧩 Интеграция с ABF

Перед загрузкой SRPM в Automated Build Farm (ABF) рекомендуется локально убедиться, что:

  1. rpmlint не выдаёт ошибок;
  2. сборка через mock проходит успешно;
  3. rpmbuild -ba создаёт идентичный SRPM при повторе.

💡 В ABF каждая сборка фиксируется — reproducible build важен для доверенной экосистемы ROSA.


🧠 Мини-тест для самопроверки

ВопросОтвет
Что делает rpmlint?Проверяет пакет и SPEC на ошибки и несоответствия
Что означает ошибка no-manual-page-for-binary?У бинарного файла нет документации
Где должен лежать исходный код?В ~/rpmbuild/SOURCES/
Что запрещено в секции %build?Скачивание файлов из сети
Что проверяет ROSA Packaging Guidelines?Стиль, качество и соответствие пакета стандартам дистрибутива

🧭 Итого

Теперь вы:

  • умеете проверять пакеты на ошибки и несоответствия;
  • знаете правила ROSA Packaging Guidelines;
  • можете гарантировать стабильность и чистоту пакета;
  • готовы перейти к следующему этапу — работе с Git и коллаборацией в команде ROSA.

Следующий документ — “Git и работа в ROSA Team”, где вы узнаете о структуре репозиториев, ревью-процессах и взаимодействии с Automated Build Farm.